从零开始实现线性判别分析(LDA)算法(多类情形)

您所在的位置:网站首页 matlab 多分类算法 从零开始实现线性判别分析(LDA)算法(多类情形)

从零开始实现线性判别分析(LDA)算法(多类情形)

2024-01-22 05:41| 来源: 网络整理| 查看: 265

声明:版权所有,转载请联系作者并注明出处: http://blog.csdn.net/u013719780?viewmode=contents

知乎专栏: https://www.zhihu.com/people/feng-xue-ye-gui-zi/columns

前文详细阐述了只有二类的情形,假设如果是多类情形,该怎么处理才能保证投影后的类别能够较好的分离呢?

我们之前讨论的是如何将 n (特征个数)维降到一维,现在类别多了,一维也许已经不能做到投影后达到较好的分离效果。假设我们有nlabels个类别,需要 k 维向量(基向量)来做投影。将这k维向量表示为

W=(w1,w2,…,wk),wi(i=1,2,…,k)是列向量,

则有

yi=wTix,y=WTx,

将 D 按照类别标签划分为Dnlabels类 D1,D2,…,Dnlabels , 其中 D1⋃D2⋃…⋃Dnlabels=D,D1⋂D2⋂…⋂Dnlabels=∅ , 定义每个子集的中心:

若是多类别,相关符号与二类别类似(详见上篇文章),其中子集 Di 的均值(中心)为

μi=1ni∑x(i)∈Dix(i),(1)

总体样本均值:

μ=1m∑x(i)∈Dx(i),(2)

类内离散度矩阵定义类似:

Sw=∑i=1nlabels∑x(k)∈Di(x(k)−μi)(x(k)−μi)T,(3)

需要注意的是,类间离散度矩阵的定义有些不同,回想我们二值类型情形时的公式 J(w) ,分子是两类中心距,分母是每个类自己的散列度。现在投影方向是多维了(多条直线),分子需要做一些改变,我们不是求两两样本中心距之和(这个对描述类别间的分散程度没有用),而是求每类中心相对于全样本中心的散列度之和。原来度量的是两个均值点的散列情况,现在度量的是每类均值点相对于样本中心的散列情况。类似于将 μi 看作样本点, μ 看作均值的协方差矩阵,如果某类里面的样本点较多,那么其权重稍大,权重用 nim 表示,但由于 J(w) 对倍数不敏感,因此使用 ni , SB 的具体定义如下:

SB=∑i=1nlabelsni(μi−μ)(μi−μ)T,(4)

当然还有另一种类间类内的离散度矩阵表达方式:

SB=∑i=1nlabelsp(i)(μi−μ)(μi−μ)T,

Sw=∑i=1nlabelsp(i)ni∑x(k)∈Dk(x(k)−μi)(x(k)−μi)T=∑i=1nlabelsp(i)E{(x(k)−μi)(x(k)−μi)T|x(k)∈Dk}.

其中 p(i) 是第 i 类样本的先验概率,即样本中属于i类的概率 ( p(i)=nim ) ,把 p(i)=nim 代入上面第二组式子中我们可以发现第一组式子只是比第二组式子都少乘了 1m ,我们将在稍后进行讨论,其实对于乘不乘该 1m ,对于算法本身并没有影响,现在我们分析一下算法的思想.

我们可以知道矩阵 (μi−μ)(μi−μ)T 的实际意义是一个协方差矩阵,这个矩阵所刻画的是该类与样本总体之间的关系,其中该矩阵对角线上的函数所代表的是该类相对样本总体的方差(即分散度),而非对角线上的元素所代表是该类样本总体均值的协方差(即该类和总体样本的相关联度或称冗余度),所以根据公式(4)可知,(4)式即把所有样本中各个样本根据自己所属的类计算出样本与总体的协方差矩阵的总和,这从宏观上描述了所有类和总体之间的离散冗余程度。同理可以的得出(3)式中为分类内各个样本和所属类之间的协方差矩阵之和,它所刻画的是从总体来看类内各个样本与类之间(这里所刻画的类特性是由是类内各个样本的平均值矩阵构成)离散度,其实从中可以看出不管是类内的样本期望矩阵还是总体样本期望矩阵,它们都只是充当一个媒介作用,不管是类内还是类间离散度矩阵都是从宏观上刻画出类与类之间的样本的离散度和类内样本和样本之间的离散度。

LDA做为一个分类的算法,我们当然希望它所分的类之间耦合度低,类内的聚合度高,即类内离散度矩阵的中的数值要小,而类间离散度矩阵中的数值要大,这样的分类的效果才好。

与上一篇文章类似,我们引入Fisher判别准则表达式,即损失函数:

J(w)=|WTSBW||WTSwW|(5)

由于我们得到的分子分母都是散列矩阵,要将矩阵变成实数,需要取行列式。又因为行列式的值实际上是矩阵特征值的积,一个特征值可以表示在该特征向量上的发散程度。因此我们使用行列式来计算(此处我感觉有点牵强,道理不是那么有说服力)。整个问题又回归为求 J(w) 的最大值了。

我们的目标就是通过最优化(5)式,找到有一组最优鉴别矢量构成的投影矩阵(这里我们也可以看出1/m可以通过分子分母约掉,所以前面所提到的第一组公式和第二组公式所表达的效果是一样的)。

W∗=argmax|WTSBW||WTSwW|(6)

可以证明,当为 Sw 非奇异时(一般在实现LDA算法时,都会对样本做一次PCA算法的降维,消除样本的冗余度,从而保证 Sw 是非奇异阵,当然即使 Sw 为奇异阵也是可以解的,可以把 Sw 或 SB 对角化,这里不做讨论,假设都是非奇异的情况)时,根据拉格朗日乘数法容易知道(详细推导见上一篇文章),最佳投影矩阵 W∗ 的列向量满足下面特征方程

SBW=λSwW,(7)

将(7)式代入(6)式可得,

W∗=argmax|λ|

很明显,只需要取绝对值比较大的 k 个特征值(矩阵S−1wSB的特征值)所对应的特征向量,而这 k 个向量构成的低维空间就是我们需要找的低维空间。

注意:由于SB中的 μi−μ 秩为1,因此 SB 的秩至多为 nlabels 。又因为 ∑nlabelsi=1(μi−μ)=0 , 因此 SB 的秩至多为 nlabels−1 ,因此, k



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3